// 回文单词
#include <stdio.h>
#include <conio.h>
#include <ctype.h>

int wordsearch(char a[], char b[][10])
{
    int i, j, k, m, n, t, c = 0, d; //c为回文单词个数，其他变量为循环临时变量
    for (i = 0; a[i]; i++)          //循环查找整个字符串
    {
        for (j = i, k = i; isalpha(a[k]); k++)
            ;      //循环得到一个单词
        m = j;     //记录单词起始位置
        n = k - 1; //记录单词结束位置
        while (toupper(a[m]) == toupper(a[n]) && m <= n)
        {
            m++;
            n--;
        }
        if (m > n) //m>n为回文单词
        {
            for (d = 0, t = j; t < k; t++)
                b[c][d++] = a[t]; //把回文单词存储到数组b中
            b[c][d] = '\0';
            c++;
        }
        i = k; //设置下一个单词判断的起点
    }
    return c;
}

int main()
{
    char s1[] = "Dad left home at noon.";
    char s2[10][10];
    int i, j;
    puts(s1);
    j = wordsearch(s1, s2);
    printf("found %d words\n", j);
    for (i = 0; i < j; i++)
        puts(s2[i]);

    return 0;
}
